import axios from 'axios'
import {Message} from 'element-ui'
import store from "@/store"
import router from '@/router'

const service = axios.create({
  baseURL:'/api',
  timeout:10000
})

// 请求拦截器
service.interceptors.request.use((config)=>{
  // 注入token
  // 关于vue实例可以从store 里面获取 this. 这样获取不到 这不是一个组件
  // store.gettter.token==>请求头里面
  if(store.getters.token){
    config.headers.Authorization = `Bearer ${store.getters.token}`
    console.log('auth==>',config.headers.Authorization)
  }
  return config
},(error)=>{
// 失败执行primose
return Promise.reject(error)
})

// 请求响应拦截器
service.interceptors.response.use((response)=>{

  const data = response.data   // 后端返回的数据格式 包含
  if(data.message){
    return data
  }else{
    Message({type:'error',message})
    return Promise.reject(new Error(message))
  }
},async(error)=>{
  // 处理token过期  错误状态码 401
  debugger
  if(error.response.status===401){
    Message({type:'warning',message:'token超时了'})
    await store.dispatch('user/logout')// 退出登录
    // 主动跳到登录页
    router.push('/login')// 跳转到登录页
    return Promise.reject(error)
  }
   // error.message
   Message({type:'error',message:error.Message})
   return Promise.reject(error)
})

export default service

